home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / music / clips.lha / Clips.s < prev    next >
Text File  |  1996-01-28  |  5KB  |  267 lines

  1.     Section    CLIPS,Code
  2.     opt    !
  3.  
  4.     Incdir    Include:
  5.     Include    mysystem.i
  6.     
  7.     Include    libraries/xpk.i
  8.     Include    lib/xpkmaster_lib.i
  9.  
  10.     Include    libraries/reqtools.i
  11.     Include    lib/reqtools_lib.i
  12.     
  13.     Include    libraries/playsidbase.i
  14.     Include    lib/playsid_lib.i
  15.  
  16. CLIPS_PLAY    Equ    0
  17. CLIPS_STOP    Equ    1
  18. CLIPS_CHANGE    Equ    2
  19.  
  20. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  21. Start:    Bsr    ProcessArgs
  22.  
  23.     Move.L    $4.w,A6
  24.     Move.L    A6,_EXECBase
  25.  
  26. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  27.     Lea    (Title,PC),A1
  28.     CALL    FindPort
  29.     Tst.L    D0
  30.     Beq.S    .NoPort
  31.     Move.L    D0,A0
  32.  
  33.     Lea    (_MyMsg,PC),A1
  34.     CALL    PutMsg
  35.  
  36. .NoPort    Cmp.W    #CLIPS_PLAY,_MsgType
  37.     Bne    CloseDown
  38.  
  39.     CALL    CreateMsgPort
  40.     Move.L    D0,_MyMsgPort
  41.     Beq    CloseDown
  42.  
  43.     Move.L    D0,A1
  44.  
  45.     Moveq    #0,D0
  46.     Move.B    (MP_SIGBIT,A1),D0
  47.     Moveq    #1,D1
  48.     Lsl.L    D0,D1
  49.     Move.L    D1,_SignalSet
  50.  
  51.     Move.L    #Title,LN_NAME(A1)
  52.     Move.B    #5,LN_PRI(A1)
  53.     CALL    AddPort
  54.  
  55. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  56.     Lea    (XPKLibrary,PC),A1
  57.     Moveq    #0,D0
  58.     CALL    OpenLibrary
  59.     Move.L    D0,_XPKBase
  60.     Beq    CloseDown
  61.  
  62. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  63.     Lea    (XPKTags,PC),A0
  64.     CALL    XpkUnpack,XPK
  65.     Tst.L    D0
  66.     Bne    CloseDown
  67.  
  68. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  69.     Lea    (PSLibrary,PC),A1
  70.     Moveq    #0,D0
  71.     CALL    OpenLibrary,EXEC
  72.     Move.L    D0,_PLAYSIDBase
  73.     Beq    CloseDown
  74.  
  75.     CALL    AllocEmulResource,PLAYSID
  76.  
  77. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  78.     Move.L    (_OutputBuffer,PC),A0
  79.     CALL    CheckModule
  80.     Tst.L    D0
  81.     Bne    BadMOD
  82.  
  83.     Move.L    (_OutputBuffer,PC),A0
  84.     Move.L    A0,A1
  85.     Move.L    (_OutputBufLen,PC),D0
  86.     CALL    SetModule
  87.  
  88.     Moveq    #50,D0
  89.     CALL    SetVertFreq
  90.  
  91.     Moveq    #0,D0
  92.     Move.L    (_OutputBuffer,PC),A0
  93.     Move.W    (sidh_defsong,A0),D0
  94.     Move.L    D0,_SongNum
  95.     Move.W    (sidh_number,A0),D0
  96.     Move.L    D0,RTTags+4        ;max songs
  97.  
  98. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  99. MainLoop:    Move.L    (_SongNum,PC),D0
  100.     CALL    StartSong,PLAYSID
  101.  
  102. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  103. .WaitLoop    Move.L    (_SignalSet,PC),D0
  104.     Bset    #SIGBREAKB_CTRL_C,D0
  105.     CALL    Wait,EXEC
  106.     Move.L    D0,D4
  107.  
  108.     Move.L    (_MyMsgPort,PC),A0
  109.     CALL    GetMsg
  110.     Move.L    D0,_MsgReceived
  111.  
  112.     Btst    #SIGBREAKB_CTRL_C,D4
  113.     Bne.S    ShutDown
  114.     
  115.     Tst.L    _MsgReceived
  116.     Beq.S    ShutDown
  117.     Move.L    (_MsgReceived,PC),A0
  118.     Lea    (MN_SIZE,A0),A0 
  119.     Move.W    (A0)+,D0
  120.     Cmp.W    #CLIPS_CHANGE,D0
  121.     Bne.S    ShutDown
  122.  
  123. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  124.     Cmp.L    #1,RTTags+4
  125.     Beq.S    .NumOk
  126.  
  127.     Tst.L    _REQTOOLSBase
  128.     Bne.S    .RTOk
  129.  
  130.     Lea    (RTLibrary,PC),A1
  131.     Moveq    #38,D0
  132.     CALL    OpenLibrary,EXEC
  133.     Move.L    D0,_REQTOOLSBase
  134.     Beq.S    .NumOk
  135.  
  136. .RTOk    Lea    (_SongNum,PC),A1
  137.     Lea    (Title,PC),A2
  138.     Sub.L    A3,A3
  139.     Lea    (RTTags,PC),A0
  140.     CALL    rtGetLongA,REQTOOLS
  141.     Tst.L    D0
  142.     Beq    .WaitLoop
  143.  
  144. .NumOk    CALL    StopSong,PLAYSID
  145.     Bra    MainLoop
  146.  
  147. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  148. ShutDown:    CALL    StopSong,PLAYSID
  149.  
  150. BadMOD:    CALL    FreeEmulResource
  151.  
  152. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  153. CloseDown:    Move.L    (_OutputBuffer,PC),A1
  154.     Cmp.L    #0,A1
  155.     Beq.S    .NoMem
  156.     Move.L    (_OutputBufLen,PC),D0
  157.     CALL    FreeMem,EXEC
  158. .NoMem
  159.     Move.L    (_PLAYSIDBase,PC),A1
  160.     Cmp.L    #0,A1
  161.     Beq.S    .NoPS
  162.     CALL    CloseLibrary,EXEC
  163. .NoPS
  164.     Move.L    (_XPKBase,PC),A1
  165.     Cmp.L    #0,A1
  166.     Beq.S    .NoXPK
  167.     CALL    CloseLibrary,EXEC
  168. .NoXPK
  169.     Move.L    (_REQTOOLSBase,PC),A1
  170.     Cmp.L    #0,A1
  171.     Beq.S    .NoRT
  172.     CALL    CloseLibrary,EXEC
  173. .NoRT
  174.     Move.L    (_MyMsgPort,PC),A4
  175.     Cmp.L    #0,A4
  176.     Beq.S    .NoMsg
  177.     Move.L    A4,A1
  178.     CALL    RemPort,EXEC
  179.     Move.L    A4,A0
  180.     CALL    DeleteMsgPort
  181. .NoMsg
  182.     Rts
  183.  
  184. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  185. ProcessArgs:    Clr.B    -1(A0,D0.l)
  186.  
  187.     Lea    _ArgString,A1
  188.     Moveq    #0,D0
  189. .ArgLoop    Move.B    (A0)+,D0
  190.     Beq.S    .Exit
  191.     Cmp.B    #'\"',D0
  192.     Beq.S    .Skip
  193.     Bsr.S    ChangeCase
  194.     Move.B    D0,(A1)+
  195. .Skip    Bra.S    .ArgLoop
  196. .Exit    Move.B    #0,(A1)+
  197.  
  198.     Move.L    _ArgString,D0
  199.     Bne.S    .NotStop
  200.     Move.W    #CLIPS_STOP,_MsgType
  201.     Rts
  202. .NotStop    Cmp.L    #'CHAN',D0
  203.     Bne.S    .NotChange
  204.     Move.L    _ArgString+4,D0
  205.     Cmp.L    #$47450000,D0
  206.     Bne.S    .NotChange
  207.     Move.W    #CLIPS_CHANGE,_MsgType
  208.     Rts
  209. .NotChange    Move.W    #CLIPS_PLAY,_MsgType
  210.     Rts
  211.  
  212. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  213. ChangeCase:    Cmp.B    #'a',D0
  214.     Blo.S    .exit
  215.     Cmp.B    #'z',D0
  216.     Bgt.S    .exit
  217. .change    Sub.B    #32,D0
  218. .exit    Rts
  219.  
  220. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  221. Version:    Dc.B    0,'$VER: CLI_PlaySID 0.05 (22.10.95)',0
  222. XPKLibrary:    XPKMASTERNAME
  223. PSLibrary:    PLAYSIDNAME
  224. RTLibrary:    REQTOOLSNAME
  225. Title:    Dc.B    'CLI PlaySID',0
  226. SongNumber:    Dc.B    'Please select a new song',0
  227.     Even
  228.  
  229. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  230. XPKTags:    Dc.L    XPK_InName,_ArgString
  231.     Dc.L    XPK_GetOutBuf,_OutputBuffer
  232.     Dc.L    XPK_GetOutLen,_OutputLength
  233.     Dc.L    XPK_GetOutBufLen,_OutputBufLen
  234.     Dc.L    XPK_PassThru,-1
  235.     Dc.L    TAG_DONE
  236.  
  237. RTTags:    Dc.L    RTGL_Max,1
  238.     Dc.L    RTGL_Min,1
  239.     Dc.L    RTGL_TextFmt,SongNumber
  240.     Dc.L    RTGL_Flags,GLREQF_CENTERTEXT
  241.     Dc.L    RT_ReqPos,REQPOS_CENTERSCR
  242.     Dc.L    TAG_DONE
  243.  
  244. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  245. _EXECBase:    Dc.L    0
  246. _XPKBase:    Dc.L    0
  247. _PLAYSIDBase:    Dc.L    0
  248. _REQTOOLSBase:    Dc.L    0
  249.  
  250. _OutputBuffer:    Dc.L    0
  251. _OutputLength    Dc.L    0
  252. _OutputBufLen:    Dc.L    0
  253.  
  254. _MyMsgPort:    Dc.L    0
  255. _SignalSet:    Dc.L    0
  256. _MsgReceived:    Dc.L    0
  257.  
  258. _SongNum:    Dc.L    0
  259.  
  260. _MyMsg:    Ds.B    MN_SIZE-2
  261.     Dc.W    2
  262. _MsgType:    Dc.W    CLIPS_PLAY        ;STOP/CHANGE
  263.  
  264. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  265.     Section    ClipsData,BSS
  266. _ArgString:    Ds.B    256
  267.